package com.zhoug.widget.util;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

public class DateUtil {

    /**
     *获取到从1900年到给定的年之间的年的集合
     * @param endYear >1900
     * @return
     */
    public static ArrayList<String> getYearList(String endYear){
        int endYearInt = Integer.parseInt(endYear);
        ArrayList<String> years=new ArrayList<>();
       for(int i=1900;i<=endYearInt;i++){
           years.add(i+"");
       }
       return years;
    }

    /**
     * 获取12个月的集合{01，02....10,11,12}
     * @return
     */
    public static  ArrayList<String> getMonthList(){
        ArrayList<String> months=new ArrayList<>();
        for(int i=1;i<=12;i++){
            if(i<10){
                months.add("0"+i);
            }else{
                months.add(i+"");
            }
        }
        return months;
    }

    /**
     * 是否是闰年
     * @param year
     * @return
     */
    public static boolean isLeapYear(String year){
        return  Integer.parseInt(year)%4==0;
    }

    /**
     * 根据给定的年月获取当月的所有天的集合
     * @param year 年
     * @param month  月
     * @return
     */
    public  static  ArrayList<String> getDays(String year,String month){
        int yearInt=Integer.parseInt(year);
        int monthInt=Integer.parseInt(month);
        int maxDay=0;//最大天数
        if(monthInt==1||monthInt==3||monthInt==5||monthInt==7||monthInt==8||monthInt==10||monthInt==12){
            maxDay=31;
        }else if(monthInt==2){
            if(yearInt%4==0){//闰年
                maxDay=29;
            }else{
                maxDay=28;
            }
        }else{
            maxDay=30;
        }
        ArrayList<String> days=new ArrayList<String>();
        for(int i=1;i<=maxDay;i++){
            if(i<10){
                days.add("0"+i);
            }else{
                days.add(i+"");
            }
        }
       /* if(maxDay==29){
            days.add("");
        }*/
        return days;
    }

    /**
     * 根据给定的年月获取当月的所有天的集合,数据传入第三个参数中
     * @param year 年
     * @param month  月
     * @param dayList  数据传入ArrayList
     * @return
     */
    public  static  void getDays(String year,String month,ArrayList<String> dayList){
        dayList.clear();
        int yearInt=Integer.parseInt(year);
        int monthInt=Integer.parseInt(month);
        int maxDay=0;//最大天数
        if(monthInt==1||monthInt==3||monthInt==5||monthInt==7||monthInt==8||monthInt==10||monthInt==12){
            maxDay=31;
        }else if(monthInt==2){
            if(yearInt%4==0){//闰年
                maxDay=29;
            }else{
                maxDay=28;
            }
        }else{
            maxDay=30;
        }

        for(int i=1;i<=maxDay;i++){
            if(i<10){
                dayList.add("0"+i);
            }else{
                dayList.add(i+"");
            }
        }
    }

    /**
     *把日期中的换成" "
     * @param date
     * @return
     */
    public static String parseDateT(String date){
        if(date==null){
            return null;
        }
        if(date.contains("T")){
            date = date.replace("T", " ");
        }
        if(date.length()>19){
            date=date.substring(0,19 );
        }
        return date;
    }
    /**
     *
     * @param date
     * @return
     */
    public static String getTextParseDateT(String date){
        if(StringUtil.isEmpty(date)){
            return "";
        }
        return parseDateT(date);
    }

    /**
     *只获取年月日 把日期中的换成" "
     * @param date
     * @return
     */
    public static String getTextParseDateYMD(String date){
        if(StringUtil.isEmpty(date)){
            return "";
        }
        if(date.length()>=10){
            return date.substring(0,10 );
        }else{
            return date;
        }
    }

    /**
     * 得到当前系统时间
     *
     * @param format0 时间格式  默认：yyyy-MM-dd HH:mm:ss
     * @return
     */
    public static String getCurrentTime(String format0) {
        if (format0 == null) {
            format0 = "yyyy-MM-dd HH:mm:ss";
        }
        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat(format0);
        return format.format(date);
    }
}
